﻿using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Windows.Forms;
using Microsoft.Office.Core;


namespace Prueba
{
    class Estadisticas
    {
        public static OleDbConnection conectarExcel()
        {
            OleDbConnection con;
            try
            {

                String file = System.Windows.Forms.Application.StartupPath + @"\Datos Lotes\Coordenadas.xlsx";
                con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file + ";Extended Properties=Excel 8.0;");

            }
            catch (Exception)
            {
                con = null;
                MessageBox.Show("Error de Conexión!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return con;
        }

        public static int obtenerCantidadLotesSembrados() 
        {
            int cantidad = 0;
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT COUNT(Estado) FROM [Coordenadas$] WHERE Estado = 'Sembrado'", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                DataRow campo = ds.Tables[0].Rows[0];
                cantidad = Convert.ToInt32(campo[0].ToString());
            }
            
            catch (Exception)
            {

                cantidad = 0;
            }
            

            return cantidad;
        
        }

        public static int obtenerCantidadLotesCosechados()
        {
            int cantidad = 0;
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT COUNT(Estado) FROM [Coordenadas$] WHERE Estado = 'Cosechado'", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                DataRow campo = ds.Tables[0].Rows[0];
                cantidad = Convert.ToInt32(campo[0].ToString());
            }

            catch (Exception)
            {

                cantidad = 0;
            }
            

            return cantidad;

        }

        public static int obtenerCantidadLotes()
        {
            int cantidad = 0;
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT COUNT(Estado) FROM [Coordenadas$]", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                DataRow campo = ds.Tables[0].Rows[0];
                cantidad = Convert.ToInt32(campo[0].ToString());
            }

            catch (Exception)
            {

                cantidad = 0;
            }
            

            return cantidad;

        }

        public static String[] obtenerLoteMayorHumedad()
        {
            String[] lote = new String[5];
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT TOP 5 Lote FROM [Coordenadas$] WHERE Humedad > 32 AND Estado = 'Sembrado' ORDER BY Humedad DESC, Lote", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    DataRow campo = ds.Tables[0].Rows[i];
                    lote[i] = campo["Lote"].ToString();
                }
            }

            catch (Exception)
            {

                lote = null;
            }
           

            return lote;

        }

        public static String[] obtenerLoteMenorHumedad()
        {
            String[] lote = new String[5];
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT TOP 5 Lote FROM [Coordenadas$] WHERE Humedad < 25 AND Humedad <> 0 AND Estado = 'Sembrado' ORDER BY Humedad, Lote", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    DataRow campo = ds.Tables[0].Rows[i];
                    lote[i] = campo["Lote"].ToString();
                }
            }

            catch (Exception)
            {

                lote = null;
            }
            

            return lote;

        }

        public static DataSet obtenerLotesHumedadSegura()
        {
            
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT Lote,Humedad FROM [Coordenadas$] WHERE Humedad > 32 OR Humedad = 32 AND Estado = 'Sembrado'", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                          
            }

            catch (Exception)
            {

                ds = null;
            }
           

            return ds;

        }

        public static DataSet obtenerLoteHumedadIntermedia()
        {
            
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT Lote,Humedad FROM [Coordenadas$] WHERE Humedad > 25 AND Humedad < 32 AND Estado = 'Sembrado'", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                
            }

            catch (Exception)
            {

                ds = null;
            }

            return ds;

        }

        public static DataSet obtenerLoteHumedadPeligro()
        {
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT Lote,Humedad FROM [Coordenadas$] WHERE Humedad < 25 AND Humedad <> 0 OR Humedad = 25 AND Estado = 'Sembrado'", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                
            }

            catch (Exception)
            {

                ds = null;
            }
            

            return ds;

        }

        public static DataSet obtenerHumedadesLotes()
        {
            
            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT Lote,Humedad FROM [Coordenadas$]", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();
                

            }

            catch (Exception)
            {

                ds = null;
            }


            return ds;

        }

        public static DataSet obtenerEstadoLotes()
        {

            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT Lote,Estado FROM [Coordenadas$]", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();


            }

            catch (Exception)
            {

                ds = null;
            }


            return ds;

        }

        public static DataSet obtenerLotesCosechados()
        {

            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT Lote,Estado FROM [Coordenadas$] WHERE Estado = 'Cosechado'", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();


            }

            catch (Exception)
            {

                ds = null;
            }


            return ds;

        }

        public static DataSet obtenerLotesSembrados()
        {

            DataSet ds = new DataSet();
            OleDbConnection con = conectarExcel();
            try
            {
                con.Open();
                OleDbDataAdapter adaptador = new OleDbDataAdapter("SELECT Lote,Estado FROM [Coordenadas$] WHERE Estado = 'Sembrado'", con);
                adaptador.Fill(ds, "tablaCoordenadas");
                con.Close();
                con.Dispose();


            }

            catch (Exception)
            {

                ds = null;
            }


            return ds;

        }

     }
}
